package com.alibaba.dubbo.rpc.benchmark;

import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CyclicBarrier;

public class RpcBenchmarkClient extends AbstractBenchmarkClient {

    @SuppressWarnings("rawtypes")
    @Override
    public ClientRunnable getClientRunnable(String protocol, String serialization, String targetIP, int targetPort, int clientNums, int rpcTimeout,
                                            CyclicBarrier barrier, CountDownLatch latch, long startTime, long endTime) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
        String runnable = properties.getProperty("classname");
        Class[] parameterTypes = new Class[] { String.class, String.class, String.class, int.class, int.class, int.class, CyclicBarrier.class,
                CountDownLatch.class, long.class, long.class };
        Object[] parameters = new Object[] { protocol, serialization, targetIP, targetPort, clientNums, rpcTimeout, barrier, latch, startTime,
                endTime };
           return (ClientRunnable) Class.forName(runnable).getConstructor(parameterTypes).newInstance(parameters);
    }

    public static void main(String[] args) throws Exception {
        new RpcBenchmarkClient().run(args);
    }
}
